iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
1
Modern Web

美麗的邂逅-與安室....伊春系列 第 16

螞粉與蓋兜 (MAVEN vs. Gradle)

  • 分享至 

  • xImage
  •  
螞蟲,近身難受,有寶物螞粉(maven)與蓋兜(gradle),撒粉可阻,兜能護身,唯二者擇一。
  • MAVEN
  • GRADLE
  • ANT

在上回 Dependencies,可以看出,一個 Spring Boot 專案,可能包含許許多多相依的套件。如果把這個專案比喻成一個營隊,那相依的套件好比是眾將官(或是眾嘍囉),管理好這些成員,不允許冒名頂替,出操上課,都要安排,這可不是小工程,而 Maven 或是 Gradle 就是作這個用的,不是實際上戰場,而是讓這些上戰場的官兵元帥,可以整軍成隊,發揮戰力。新創建 Spring Boot 專案時,Type 欄位有 Maven 及 Gradle 提供選擇。
https://ithelp.ithome.com.tw/upload/images/20191001/20120951iNZfyNiRXd.png
簡單來說,Maven 較有歷史,因此配套更為完整些,以 XML 格式為主,看起來有點小淩亂--個人感覺;但 Gradle 比較新,資歷較淺,比較簡單用一點點,以 JSON 格式為主,看起來清爽一些。
在前面專案(simpleDemo)為例,在 gradle 中,有 build.gradle, 以dependencies 為例,編碼為:

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

在 maven 中,設定則存在 pom.xml,換湯不換藥,不過4行變成11行。

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

以 plug in 為例,在 gradle 下build.gradle為:

plugins {
	id 'org.springframework.boot' version '2.1.8.RELEASE'
	id 'io.spring.dependency-management' version '1.0.8.RELEASE'
	id 'java'
}
group = 'com.example'
sourceCompatibility = '1.8'

而在 maven, pom.xml 中編碼如下,我們看見7行變成18行。

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<properties>
	<java.version>1.8</java.version>
</properties>
<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

在以後系列文中,我都採用 Maven,這是因為在網站上找到的資料Maven還是比較多,方便參照比對。
(apache) maven / gradle (另外有一個競爭者 (apache) ant (another neat tool), 目前相對勢微), 除了作依賴關係管理(dependency management)外,還有許多的功能,例如構建自動化工具(build automation tool)…等,在此就不多作介紹,都有相當的內容,或許,單單這兩個寶物,任何一個都足以寫三十篇了。


上一篇
乾坤借法 (annotation)
下一篇
三位一體 (Spring MVC)
系列文
美麗的邂逅-與安室....伊春30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言